package com.sicheng.lc.lc笔试.字节篇;

import java.util.*;

/**
 * @author zsc
 * @version 1.0
 * @date 2022/8/28 10:25
 */
public class 循环依赖 {

    /**
     * 在完成A之前需要先完成B，B之前需要C以此类推
     * 点的范围[1,9]
     * 此题不难拓扑排序的板板，搞懂输入就行
     * 输入
     * 第一行 t 表示一共有t行数据
     * 第二行 一列数[1,9] 表示 询问他们能否完成
     * 接下来每行代表依赖关系
     * 每一行 第一个数x 后面的数都是x的依赖 a b c.... (在完成x之前必须完成它所依赖的那些)
     */
    public static void main(String[] args) {
        ArrayList<Integer> query = new ArrayList<>();
        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt() - 1;
        sc.nextLine();
        String[] s = sc.nextLine().split(" ");
        for (String x : s) {
            query.add(Integer.parseInt(x));
        }

        List<Integer>[] g = new ArrayList[10];
        Arrays.setAll(g, k -> new ArrayList<>(10));
        int[] degree = new int[10];
        Arrays.fill(degree, -1);
        for (int k = 0; k < t; k++) {
            String[] nums = sc.nextLine().split(" ");
            int x = 0, y;
            for (int i = 0; i < nums.length; i++) {
                if (i == 0) {
                    x = Integer.parseInt(nums[i]);
                } else {
                    y = Integer.parseInt(nums[i]);
                    g[y].add(x);
                    if (degree[y] == -1) {
                        degree[y] = 0;
                    }
                    if (degree[x] == -1) {
                        degree[x] = 1;
                    } else {
                        degree[x]++;
                    }
                }
            }
        }

        ArrayDeque<Integer> q = new ArrayDeque<>();
        for (int i = 1; i < degree.length; i++) {
            if (degree[i] == 0)
                q.offer(i);
        }

        while (!q.isEmpty()) {
            int y = q.poll();
            for (int x : g[y]) {
                degree[x]--;
                if (degree[x] == 0)
                    q.offer(x);
            }
        }
        for (int u : query) {
            // 可以完成入度为0 输出1，完不成就输出0
            int res = degree[u] == 0 ? 1 : 0;
            System.out.print(res + " ");
        }
    }
}
